home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
tools
/
czesc_3
/
multiuser
/
src
/
library
/
multiuser.doc
< prev
next >
Wrap
Text File
|
1994-03-07
|
32KB
|
1,003 lines
TABLE OF CONTENTS
multiuser.library/--background--
multiuser.library/muAddMonitor
multiuser.library/muAllocGroupInfo
multiuser.library/muAllocUserInfo
multiuser.library/muCheckPasswd
multiuser.library/muExtOwner2ULONG
multiuser.library/muFreeExtOwner
multiuser.library/muFreeGroupInfo
multiuser.library/muFreeUserInfo
multiuser.library/muFreeze
multiuser.library/muGetConfigDirLock
multiuser.library/muGetDefProtection
multiuser.library/muGetGroupInfo
multiuser.library/muGetPasswdDirLock
multiuser.library/muGetRelationshipA
multiuser.library/muGetTaskExtOwner
multiuser.library/muGetTaskOwner
multiuser.library/muGetUserInfo
multiuser.library/muKill
multiuser.library/muLimitDOSSetProtection
multiuser.library/muLoginA
multiuser.library/muLogoutA
multiuser.library/muPasswd
multiuser.library/muRemMonitor
multiuser.library/muSetDefProtectionA
multiuser.library/muSetProtection
multiuser.library/muUnfreeze
multiuser.library/muUserInfo2ExtOwner
multiuser.library/--background-- multiuser.library/--background--
PURPOSE
MultiUser was developed to get a greather access control than the
standard Amiga Operating System provided. It lets several users work on
the same computer - even at the same time - without losing their privacy.
OVERVIEW
* Users
A user can only use the system if he/she is authorized to login.
* Groups
Every user belongs to at least one group - his/her primary group - and
may belong to some secondary groups too.
* Tasks/processess
Every task or process is owned by a user.
* Objects
Objects are owned by a user (specified by his user identifier and one
of his group identifiers) and generally contain some access flags which
define whether someone has access to the object or not. There can be
three kinds of access flags:
- flags for the owner of the object
- flags for a user who belongs to the same group as stored with the
object
- flags for other users
E.g. the objects used with the MultiUserFileSystem are files and
directories, the access flags are the protection bits.
* Access control
If a user requests access to an object, the system can check whether
he/she has access or not via the owner of the requesting task or
process and via the owner of the wanted object using the access flags.
multiuser.library/muAddMonitor multiuser.library/muAddMonitor
NAME muAddMonitor() (V39)
success = muAddMonitor(monitor);
BOOL muAddMonitor(struct muMonitor *);
D0 A0
DESCRIPTION
Add a monitor to the system. Depending on the monitor flags, you will be
notified on some actions via a signal or message. See
<libraries/multiuser.h> for more information. This call may be made only
by root.
INPUTS
monitor - an initialised muMonitor structure.
RESULT
success - success indicator.
BUGS
none known
SEE ALSO
muRemMonitor(), <libraries/multiuser.h>
multiuser.library/muAllocGroupInfo multiuser.library/muAllocGroupInfo
NAME muAllocGroupInfo() (V39)
info = muAllocGroupInfo();
struct muGroupInfo *muAllocGroupInfo(void);
D0
DESCRIPTION
Allocate a muGroupInfo structure in a future compatible manner. This is
the only valid way to allocate a muGroupInfo structure. The structure
will be made empty for you.
INPUTS
none
RESULT
info - pointer to the allocated muGroupInfo structure or NULL for no
memory.
BUGS
none known
SEE ALSO
muFreeGroupInfo(), muGetGroupInfo()
multiuser.library/muAllocUserInfo multiuser.library/muAllocUserInfo
NAME muAllocUserInfo() (V39)
info = muAllocUserInfo();
struct muUserInfo *muAllocUserInfo(void);
D0
DESCRIPTION
Allocate a muUserInfo structure in a future compatible manner. This is
the only valid way to allocate a muUserInfo structure. The structure
will be made empty for you.
INPUTS
none
RESULT
info - pointer to the allocated muUserInfo structure or NULL for no
memory.
BUGS
none known
SEE ALSO
muFreeUserInfo(), muGetUserInfo()
multiuser.library/muCheckPasswd multiuser.library/muCheckPasswd
NAME muCheckPasswd() (V39)
valid = muCheckPasswd(taglist);
BOOL muCheckPasswd(struct TagItem *);
D0 A0
DESCRIPTION
Check whether the supplied password is the valid password for the owner
of the current task.
This function is mainly intended to support SysLock look-alike programs
(cfr. XLock for the MIT's X Window System).
TAGS
muT_Password - (STRPTR)
The password.
INPUTS
taglist - a pointer to a taglist (may be NULL).
RESULT
valid - indicates the password is valid.
NOTE
This function may be extended in future to let the super user (root)
check passwords for other tasks.
BUGS
none known
SEE ALSO
muPasswd()
multiuser.library/muExtOwner2ULONG multiuser.library/muExtOwner2ULONG
NAME muExtOwner2ULONG() (V39)
user = muExtOwner2ULONG(owner);
ULONG muExtOwner2ULONG(struct muExtOwner *);
DESCRIPTION
This macro converts a muExtOwner structure to a ULONG (cfr. the
difference between muGetTaskExtOwner() and muGetTaskOwner()).
INPUTS
owner - a structure returned by muGetTaskExtOwner() (may be NULL). You
still have to free this structure by yourself!
RESULT
user - the bits 31-16 specify the user id (uid), the bits 15-0 specify
the group id (gid). NULL for nobody.
BUGS
none known
SEE ALSO
muGetTaskExtOwner(), muGetTaskOwner(), muGetRelationshipA()
multiuser.library/muFreeExtOwner multiuser.library/muFreeExtOwner
NAME muFreeExtOwner() (V39)
muFreeExtOwner(info);
void muFreeExtOwner(struct muExtOwner *);
A0
DESCRIPTION
Free a muExtOwner structure returned by muGetTaskExtOwner or
muUserInfo2ExtOwner.
INPUTS
info - a pointer to the muExtOwner structure you want to free. May be
NULL.
RESULT
none
BUGS
none known
SEE ALSO
muGetTaskExtOwner(), muUserInfo2ExtOwner
multiuser.library/muFreeGroupInfo multiuser.library/muFreeGroupInfo
NAME muFreeGroupInfo() (V39)
muFreeGroupInfo(info);
void muFreeGroupInfo(struct muGroupInfo *);
A0
DESCRIPTION
Free a muGroupInfo structure allocated with muAllocGroupInfo.
INPUTS
info - a pointer to the muGroupInfo structure you want to free. May be
NULL.
RESULT
none
BUGS
none known
SEE ALSO
muAllocGroupInfo(), muGetGroupInfo()
multiuser.library/muFreeUserInfo multiuser.library/muFreeUserInfo
NAME muFreeUserInfo() (V39)
muFreeUserInfo(info);
void muFreeUserInfo(struct muUserInfo *);
A0
DESCRIPTION
Free a muUserInfo structure allocated with muAllocUserInfo.
INPUTS
info - a pointer to the muUserInfo structure you want to free. May be
NULL.
RESULT
none
BUGS
none known
SEE ALSO
muAllocUserInfo(), muGetUserInfo()
multiuser.library/muFreeze multiuser.library/muFreeze
NAME muFreeze() (V39)
success = muFreeze(task);
BOOL muFreeze(struct Task *);
D0 A0
DESCRIPTION
Freeze a specified task. You cannot freeze yourself nor the
MultiUser.server. This call may be made only by root.
INPUTS
task - a pointer to the task you want to freeze.
RESULT
success - success indicator.
BUGS
none known
SEE ALSO
muKill(), muUnfreeze()
multiuser.library/muGetConfigDirLock multiuser.library/muGetConfigDirLock
NAME muGetConfigDirLock() (V39)
lock = muGetConfigDirLock();
BPTR muGetConfigDirLock(void);
D0
DESCRIPTION
Get a shared lock on the directory of the configuration and group file.
The names of these files are defined in <libraries/multiuser.h>. If this
call succeeds, you must free the returned lock by yourself.
This function is mainly intended to support configuration tools.
INPUTS
none
RESULT
lock - the desired lock, or NULL for failure.
BUGS
none known
SEE ALSO
muGetPasswdDirLock(), <libraries/multiuser.h>
multiuser.library/muGetDefProtection multiuser.library/muGetDefProtection
NAME muGetDefProtection() (V39)
mask = muGetDefProtection(task);
ULONG muGetDefProtection(struct Task *);
D0 D0
DESCRIPTION
Get the default protection bits related to a task.
INPUTS
task - a pointer to the task for which you want to know the default
protection bits, or NULL for the current task.
RESULT
mask - the default protection bits. They are in the format like defined
in <dos/dos.h>.
BUGS
none known
SEE ALSO
muSetDefProtectionA(), <dos/dos.h>
multiuser.library/muGetGroupInfo multiuser.library/muGetGroupInfo
NAME muGetGroupInfo() (V39)
info = muGetGroupInfo(info, keytype);
struct muGroupInfo *muGetGroupInfo(struct muGroupInfo *, ULONG);
D0 A0 D0
DESCRIPTION
Get information about a group. You must pass in a muGroupInfo structure
and a keytype, which defines the type of information you have filled in
in the muGroupInfo structure about the wanted group(s). Valid keytypes
are:
muKeyType_First - find the first group. You don't have to
fill in any fields in the muGroupInfo
structure.
muKeyType_Next - find the next group. Use this only after
you've made a call with muKeyType_First as
keytype.
muKeyType_GroupID - find a group with a specific GroupID. Fill
in the field GroupID before calling
muGetGroupInfo(). The search will be case
sensitive.
muKeyType_WGroupID - find a group with a specific GroupID. Fill
in the field GroupID before calling
muGetGroupInfo(). The search will be case
insensitive, wild cards are allowed.
muKeyType_WGroupIDNext - find the next group with a specific GroupID.
Use this only after you've made a call with
muKeyType_WGroupID as keytype.
muKeyType_gid - find a group with a specific gid. Fill in
the field gid before calling
muGetGroupInfo().
muKeyType_GroupName - find a group with a specific GroupName.
Fill in the field GroupName before calling
muGetGroupInfo(). The search will be case
insensitive.
muKeyType_WGroupName - find a group with a specific GroupName.
Fill in the field GroupName before calling
muGetGroupInfo(). The search will be case
insensitive, wild cards are allowed.
muKeyType_WGroupNameNext - find the next group with a specific
GroupName. Use this only after you've made
a call with muKeyType_WGroupName as keytype.
muKeyType_MgrUid - find a group which is managed by a user,
specified by his uid. Fill in the field
MgrUid before calling muGetGroupInfo().
muKeyType_MgrUidNext - find the next group which is managed by a
specified user. Use this only after you've
made a call with muKeyType_MgrUid as
keytype.
INPUTS
info - a muGroupInfo structure, allocated with muAllocGroupInfo.
keytype - the magic keytype.
RESULT
info - a pointer to the supplied muGroupInfo structure, or NULL for a
failure.
NOTE
Do not change the contents of a muGroupInfo structure before calls to
muGetGroupInfo() with muKeyType_Next, muKeyType_WGroupIDNext,
muKeyType_WGroupNameNext or muKeyType_MgrUidNext.
BUGS
none known
SEE ALSO
muAllocGroupInfo(), muGetGroupInfo(), <libraries/multiuser.h>,
dos.library/SetOwner()
multiuser.library/muGetPasswdDirLock multiuser.library/muGetPasswdDirLock
NAME muGetPasswdDirLock() (V39)
lock = muGetPasswdDirLock();
BPTR muGetPasswdDirLock(void);
D0
DESCRIPTION
Get a shared lock on the directory of the password file. The name of the
password file is defined in <libraries/multiuser.h>. If this call
succeeds, you must free the returned lock by yourself.
This function is mainly intended to support configuration tools.
INPUTS
none
RESULT
lock - the desired lock, or NULL for failure.
BUGS
none known
SEE ALSO
muGetConfigDirLock(), <libraries/multiuser.h>
multiuser.library/muGetRelationshipA multiuser.library/muGetRelationshipA
NAME muGetRelationshipA() (V39)
flags = muGetRelationshipA(user, owner, taglist);
ULONG muGetRelationshipA(struct muExtOwner *, ULONG, struct TagItem *);
D0 D0 D1 A0
DESCRIPTION
Get the access relationship the user has to an object owned by owner.
You're strongly advised to use this function for access checking in your
own programs too, since this functions contains the 'official' access
rights policy, which may be extended or changed in future. This function
has been made as fast as possible.
TAGS
No tags are currently defined.
INPUTS
user - the user requesting access to the object, as returned by
muGetTaskExtOwner() (may be NULL).
owner - the owner of the object (i.e. his uid/gid). Pass NULL if you
just want to check if the user is root or nobody.
taglist - a pointer to a taglist (may be NULL).
RESULT
flags - relationship flags, as defined in <libraries/multiuser.h>.
BUGS
none known
SEE ALSO
muGetTaskExtOwner(), <libraries/multiuser.h>
multiuser.library/muGetTaskExtOwner multiuser.library/muGetTaskExtOwner
NAME muGetTaskExtOwner() (V39)
user = muGetTaskExtOwner(task);
struct muExtOwner *muGetTaskExtOwner(struct Task *);
D0 D0
DESCRIPTION
Get the owner of a task. Unlike muGetTaskOwner(), this function returns
a structure which contains the secondary groups the user belongs to, too.
Do not forget to free the returned structure with muFreeExtOwner().
INPUTS
task - a pointer to the task of which you want to know the owner, or NULL
for the current task.
RESULT
user - a pointer to a structure containing information about the user of
the specified task. This may (but mostly won't) be NULL for
nobody. You must use muFreeExtOwner() to free this structure
after use. You may not alter this structure.
BUGS
none known
SEE ALSO
muFreeExtOwner(), muGetRelationshipA(), muGetUserInfo()
multiuser.library/muGetTaskOwner multiuser.library/muGetTaskOwner
NAME muGetTaskOwner() (V39)
user = muGetTaskOwner(task);
ULONG muGetTaskOwner(struct Task *);
D0 D0
DESCRIPTION
Get the owner of a task. Use muGetTaskExtOwner() if you want information
about the owner's secondary groups too.
INPUTS
task - a pointer to the task of which you want to know the owner, or NULL
for the current task.
RESULT
user - the owner of the specified task. The bits 31-16 specify the owner
user id (uid), the bits 15-0 specify the owner group id (gid).
NULL for nobody.
BUGS
none known
SEE ALSO
muGetTaskExtOwner(), muGetUserInfo()
multiuser.library/muGetUserInfo multiuser.library/muGetUserInfo
NAME muGetUserInfo() (V39)
info = muGetUserInfo(info, keytype);
struct muUserInfo *muGetUserInfo(struct muUserInfo *, ULONG);
D0 A0 D0
DESCRIPTION
Get information about a user. You must pass in a muUserInfo structure
and a keytype, which defines the type of information you have filled in
in the muUserInfo structure about the wanted user(s). Valid keytypes
are:
muKeyType_First - find the first user. You don't have to fill
in any fields in the muUserInfo structure.
muKeyType_Next - find the next user. Use this only after
you've made a call with muKeyType_First as
keytype.
muKeyType_UserID - find a user with a specific UserID. Fill in
the field UserID before calling
muGetUserInfo(). The search will be case
sensitive.
muKeyType_WUserID - find a user with a specific UserID. Fill in
the field UserID before calling
muGetUserInfo(). The search will be case
insensitive, wild cards are allowed.
muKeyType_WUserIDNext - find the next user with a specific UserID.
Use this only after you've made a call with
muKeyType_WUserID as keytype.
muKeyType_uid - find a user with a specific uid. Fill in the
field uid before calling muGetUserInfo().
muKeyType_gid - find a user with a specific gid. Fill in the
field gid before calling muGetUserInfo().
muKeyType_gidNext - find the next user with a specific gid. Use
this only after you've made a call with
muKeyType_gid as keytype.
muKeyType_UserName - find a user with a specific UserName. Fill
in the field UserName before calling
muGetUserInfo(). The search will be case
insensitive.
muKeyType_WUserName - find a user with a specific UserName. Fill
in the field UserName before calling
muGetUserInfo(). The search will be case
insensitive, wild cards are allowed.
muKeyType_WUserNameNext - find the next user with a specific UserName.
Use this only after you've made a call with
muKeyType_WUserName as keytype.
INPUTS
info - a muUserInfo structure, allocated with muAllocUserInfo.
keytype - the magic keytype.
RESULT
info - a pointer to the supplied muUserInfo structure, or NULL for a
failure.
NOTE
Do not change the contents of a muUserInfo structure before calls to
muGetUserInfo() with muKeyType_Next, muKeyType_WUserIDNext,
muKeyType_gidNext or muKeyType_WUserNameNext.
BUGS
none known
SEE ALSO
muAllocUserInfo(), muGetUserInfo(), <libraries/multiuser.h>,
dos.library/SetOwner()
multiuser.library/muKill multiuser.library/muKill
NAME muKill() (V39)
success = muKill(task);
BOOL muKill(struct Task *);
D0 D0
DESCRIPTION
Cancel a specified task. You cannot commit suicide nor kill the
MultiUser.server. This call may be made only by root.
INPUTS
task - a pointer to the task you want to kill. This task may be frozen.
RESULT
success - success indicator.
NOTE
This function will also try to remove all windows and screens belonging
to the task.
BUGS
Due to the nature of AmigaOS, killing a task is a very dangerous action!
Use it at your own risk!
SEE ALSO
muFreeze(), muUnfreeze()
multiuser.library/muLimitDOSSetProtectionuser.library/muLimitDOSSetProtection
NAME muLimitDOSSetProtection() (V39)
success = muLimitDOSSetProtection(flag);
BOOL muLimitDOSSetProtection(BOOL);
D0 D0
DESCRIPTION
Limit dos.library/SetProtection() to change only the protection bits for
the owner of the file. If limiting is turned on, you can change the
protection bits for GROUP and OTHER only via muSetProtection(). Default
limiting is turned off.
INPUTS
flag - TRUE to turn limiting on, FALSE to turn limiting off.
RESULT
success - success indicator.
NOTE
This function is useful because a lot of programs change the protection
bits of a file without knowing about the new GROUP and OTHER flags.
BUGS
Limiting will fail if someone has an exclusive lock on the file or
directory the protection bits will be changed of.
SEE ALSO
muSetProtection()
multiuser.library/muLoginA multiuser.library/muLoginA
NAME muLoginA() (V39)
user = muLoginA(taglist);
ULONG muLoginA(struct TagItem *);
D0 A0
DESCRIPTION
Login to the system and remember the last user. Use the taglist to
specify options.
TAGS
muT_Graphical - (BOOL)
Use a graphical login instead of a console alike one.
This works only if your pr_WindowPtr is not -1. Default
is FALSE.
muT_Input - (BPTR)
Specify the filehandle to read from. Not used for a
graphical login. Default is Input().
muT_Output - (BPTR)
Specify the filehandle to write to. Not used for a
graphical login. Default is Output().
muT_PubScrName - (STRPTR)
Specify the public screen to open the login requester
on. Only used for a graphical login. Default is the
default public screen (mostly the Workbench screen).
muT_Task - (struct Task *)
Specify the task you want to login. Of course this
works only for your own tasks (or for tasks owned by
nobody), unless you are the super user (root). Default
is the current task.
muT_Own - (BOOL)
Change the owner of the specified task to the owner of
the task this call is made from. Of course this works
only for tasks owned by nobody, unless you are the super
user (root). Default is FALSE.
muT_Global - (BOOL)
Login for all tasks on the same level as the specified
one. Default is FALSE.
muT_UserID - (STRPTR)
Do not ask the user for a UserID but use the specified
UserID.
muT_Password - (STRPTR)
Do not ask the user for a Password but use the specified
Password. If you use this, you must use muT_UserID too.
muT_NoLog - (BOOL)
Do not log this action. Of course this works only if
you're root. Default is FALSE.
INPUTS
taglist - a pointer to a taglist (may be NULL).
RESULT
user - the user that logged in, or NULL for a failure. The bits 31-16
specify the owner user id (uid), the bits 15-0 specify the owner
group id (gid).
NOTE
The tags muT_UserID, muT_Password and muT_NoLog are mainly intended to
let programs change their owner to someone else temporarily (e.g. a
daemon with a set 'U'-bit owned by root). If you want to restore the
previous user later you must be aware of the fact that a call to
muLogoutA() may invoke a login request!
BUGS
none known
SEE ALSO
muLogoutA()
multiuser.library/muLogoutA multiuser.library/muLogoutA
NAME muLogoutA() (V39)
user = muLogoutA(taglist);
ULONG muLogoutA(struct TagItem *);
D0 A0
DESCRIPTION
Logout and restore the previous user. If there was no previous user or
the previous user was nobody, a login request will appear. However, the
behavior of this login request will be slightly different from that of
muLoginA(), more specifically the following actions will be taken:
- the local variable 'Home' will be set to your home directory.
- the current directory will be set to your home directory.
- If there exists a script file called '.profile' in the
configuration directory, it will be executed.
TAGS
muT_Input - see muLoginA()
muT_Output - see muLoginA()
muT_Graphical - see muLoginA()
muT_PubScrName - see muLoginA()
muT_Task - see muLoginA()
muT_Own - see muLoginA()
muT_Global - see muLoginA()
muT_Quiet - (BOOL)
Never request for a login, simply logout. Default is
FALSE.
muT_All - (BOOL)
Logout all previous users. Default is FALSE.
INPUTS
taglist - a pointer to a taglist (may be NULL).
RESULT
user - the user you're now, NULL for nobody. The bits 31-16 specify the
owner user id (uid), the bits 15-0 specify the owner group id
(gid).
NOTE
If there was no previous user, this routine will not return until you
enter a valid UserID/password pair (unless you used the tag muT_Quiet)!
However, this tag may be removed in future releases for enhanced
security.
BUGS
none known
SEE ALSO
muLoginA()
multiuser.library/muPasswd multiuser.library/muPasswd
NAME muPasswd() (V39)
success = muPasswd(oldpwd, newpwd);
BOOL muPasswd(STRPTR, STRPTR);
D0 A0 A1
DESCRIPTION
Change the password for the owner of the task this routine is called
from.
INPUTS
oldpwd - your old password.
newpwd - your new password.
RESULT
success - indicates a successful password change.
NOTE
For the format of the passwd-file, see <libraries/multiuser.h>. This
format should be compatible with the Commodore AS255 passwd file.
BUGS
none known
SEE ALSO
muCheckPasswd(), <libraries/multiuser.h>
multiuser.library/muRemMonitor multiuser.library/muRemMonitor
NAME muRemMonitor() (V39)
muRemMonitor(monitor);
void muRemMonitor(struct muMonitor *);
A0
DESCRIPTION
Remove a monitor from the system. This call may be made only by root.
INPUTS
monitor - a muMonitor structure which was added to the system using
muAddMonitor().
RESULT
none
BUGS
none known
SEE ALSO
muAddMonitor(), <libraries/multiuser.h>
multiuser.library/muSetDefProtectionA multiuser.library/muSetDefProtectionA
NAME muSetDefProtectionA() (V39)
success = muSetDefProtectionA(taglist);
BOOL muSetDefProtectionA(struct TagItem);
D0 A0
DESCRIPTION
Set the default protection bits related to a task. Of course this works
only for your own tasks (or for tasks owned by nobody), unless you are
the super user (root).
TAGS
muT_Task - (struct Task *)
Specify the task you want to change the default
protection bits for. Default is the current task.
muT_DefProtection - (ULONG)
The default protection bits. They must be in the
format like defined in <dos/dos.h> (or take a look at
<libraries/multiuser.h> if you don't have 3.0
includes:-). Default is FIBF_OTR_READ|FIBF_GRP_READ.
muT_Global - (BOOL)
Change the default protection bits for all tasks on
the same level as the specified one. Default is
FALSE.
INPUTS
taglist - a pointer to a taglist (may be NULL).
RESULT
success - success indicator.
BUGS
none known
SEE ALSO
muGetDefProtection(), <dos/dos.h>
multiuser.library/muSetProtection multiuser.library/muSetProtection
NAME muSetProtection() (V39)
success = muSetProtection(name, mask);
BOOL muSetProtection(STRPTR, LONG);
D0 D1 D2
DESCRIPTION
Set the protection attributes on a file or directory. See <dos/dos.h>
for a listing of protection bits and dos.library SetProtection() for more
information.
Using this function you can set the protection bits for GROUP and OTHER
too.
INPUTS
name - pointer to a null-terminated string
mask - the protection mask required
RESULT
success - success indicator.
BUGS
none known
SEE ALSO
muLimitDOSSetProtection(), dos.library/SetProtection(), <dos/dos.h>
multiuser.library/muUnfreeze multiuser.library/muUnfreeze
NAME muUnfreeze() (V39)
success = muUnfreeze(task);
BOOL muUnfreeze(struct Task *);
D0 A0
DESCRIPTION
Unfreeze a task you have frozen before. This call may be made
only by root.
INPUTS
task - a pointer to the task you want to unfreeze.
RESULT
success - success indicator.
BUGS
none known
SEE ALSO
muKill(), muFreeze()
multiuser.library/muUserInfo2ExtOwner multiuser.library/muUserInfo2ExtOwner
NAME muUserInfo2ExtOwner() (V39)
user = muUserInfo2ExtOwner(info);
struct muExtOwner *muUserInfo2ExtOwner(struct muUserInfo *);
D0 A0
DESCRIPTION
Convert a muUserInfo structure to a muExtOwner structure.
INPUTS
info - a pointer to the information structure (may be NULL). You still
have to free this structure by yourself.
RESULT
user - a pointer to another information structure. This may (but mostly
won't) be NULL for nobody. You must use muFreeExtOwner() to free
this structure after use. You may not alter this structure.
BUGS
none known
SEE ALSO
muFreeExtOwner(), muGetTaskExtOwner(), muGetRelationshipA(),
muGetUserInfo()